/**
 * 自动生成 MerWxMenu
 * 
 * Public/js/backend/mer_wx_menu.js
 * Zix @ 2015-06-16
 */

var MerWxMenu = {
  config: {
  },
  init: function (config) {
    var _this = this;
    $.extend(_this.config, config);
    Layout.set_menu_select(_this.config.menu_id);

    loading();
    _this.init_tmp();
    _this.init_btn();
    _this.init_menu();
  },
  
  init_tmp : function(){
    var _this = this ;
    //主菜单
    _this.config.main_menu_tmp = '<div class="main_menu">';
    _this.config.main_menu_tmp += '<div class="row" style="margin-bottom:8px;">';
    _this.config.main_menu_tmp += '<div class="col-md-3">';
    _this.config.main_menu_tmp += '<div class="input-group">';
    _this.config.main_menu_tmp += '<input type="text" class="form-control main_menu_name" placeholder="菜单名称" value="{name}">';
    _this.config.main_menu_tmp += '<span class="input-group-btn">';
    _this.config.main_menu_tmp += '<button class="btn btn-primary add_submenu_btn" type="button"><i class="fa fa-plus"></i></button>';
    _this.config.main_menu_tmp += '</span></div></div>';
    _this.config.main_menu_tmp += '<div class="col-md-2">';
    _this.config.main_menu_tmp += '<input type="text" class="form-control main_menu_value" placeholder="关键字或URL" value="{value}">';
    _this.config.main_menu_tmp += '</div><div class="col-md-2">';
    _this.config.main_menu_tmp += '<button type="button" class="btn btn-default main_menu_up_btn"><i class="fa fa-arrow-up"></i></button> ';
    _this.config.main_menu_tmp += '<button type="button" class="btn btn-default main_menu_down_btn"><i class="fa fa-arrow-down"></i></button> ';
    _this.config.main_menu_tmp += '<button type="button" class="btn btn-default main_menu_delete_btn"><i class="fa fa-times"></i></button>';
    _this.config.main_menu_tmp += '</div></div></div>';
    
    _this.config.sub_menu_tmp = '<div class="row sub_menu" style="margin-bottom:8px;">';
    _this.config.sub_menu_tmp += '<div class="col-md-1"></div>';
    _this.config.sub_menu_tmp += '<div class="col-md-2">';
    _this.config.sub_menu_tmp += '<input type="text" class="form-control sub_menu_name" placeholder="子菜单名称" value="{name}"></div>';
    _this.config.sub_menu_tmp += '<div class="col-md-2">';
    _this.config.sub_menu_tmp += '<input type="text" class="form-control sub_menu_value" placeholder="关键字或URL" value="{value}"></div>';
    _this.config.sub_menu_tmp += '<div class="col-md-2">';
    _this.config.sub_menu_tmp += '<a href="#" class="btn btn-link sub_menu_up_btn"><i class="fa fa-arrow-up"></i></a> ';
    _this.config.sub_menu_tmp += '<a href="#" class="btn btn-link sub_menu_down_btn"><i class="fa fa-arrow-down"></i></a> ';
    _this.config.sub_menu_tmp += '<a href="#" class="btn btn-link sub_menu_delete_btn"><i class="fa fa-times"></i></a>';
    _this.config.sub_menu_tmp += '</div></div>';
    
  },      
  init_btn: function () {
    var _this = this;

    //添加主菜单
    $(document).on('click', '#create_main_menu_btn', function (e) {
      e.preventDefault();
      var len = _this.config.wx_menu.button.length ;
      if ( len == 3 ) {
        tips('还能添加3个主菜单');
        return ;
      }

      $('#menu_html').append( _this.config.main_menu_tmp.replace(/{name}/g ,'').replace(/{value}/g ,'') );
      _this.config.wx_menu.button.push(  {name : '' , value : '' , sub_button :[] } );
    });

    //读取菜单
    $(document).on('click', '#get_menu_btn', function (e) {
      e.preventDefault();
      //更新数组信息
      var url = _this.config.get_menu_url ;
      var data = { wx_id : _this.config.wx_id };
      $.get( url , data , function( ret ){
        tips( ret.info )  ;
        if( ret.status) {
          _this.config.wx_menu = ret.data ;
          _this.init_menu();
        }
        
      });
    });
    
    //保存菜单
    $(document).on('click', '#save_menu_btn', function (e) {
      e.preventDefault();
      _this.update_wx_menu_data();
      var url = _this.config.save_menu_url ;
      var data = {
        wx_id : _this.config.wx_id ,
        data : _this.config.wx_menu 
      }
      
      $.post( url , data , function(ret){
        tips( ret.info );
      });
    });
    
    //发布菜单
    $(document).on('click', '#post_menu_btn', function (e) {
      e.preventDefault();
      //更新数组信息
      _this.update_wx_menu_data();
      var url = _this.config.post_menu_url ;
      var data = {
        wx_id : _this.config.wx_id ,
        data : _this.config.wx_menu 
      }
      
      $.post( url , data , function(ret){
        tips( ret.info );
      });
      
    });
    
    //添加子菜单
    $(document).on('click', '.add_submenu_btn', function (e) {
      e.preventDefault();
      var index = $('.add_submenu_btn').index($(this));
      var len = _this.config.wx_menu.button[index].sub_button.length ;

      if ( len == 5 ) {
        tips('还能添加5个子菜单');
        return ;
      }
      
      $('.main_menu').eq(index).append( _this.config.sub_menu_tmp.replace(/{name}/g ,'').replace(/{value}/g ,'') );
      _this.config.wx_menu.button[index].sub_button.push( { name : '' , value : '' } );
    });
    
    //删除主菜单
    $(document).on('click', '.main_menu_delete_btn', function (e) {
      e.preventDefault();
      var index = $('.main_menu_delete_btn').index($(this));

      
      $('.main_menu').eq(index).remove();
      _this.config.wx_menu.button.remove( index );
    });
        
    //主菜单排序提升
    $(document).on('click', '.main_menu_up_btn', function (e) {
      e.preventDefault();

      var index = $('.main_menu_up_btn').index($(this));      
      if( index == 0 ) {
        tips( '已经排行第一了' );
        return ;
      }
      
      //交换item位置
      _this.swap_item( _this.config.wx_menu.button , index , index - 1 ) ;
      //交换页面位置
      $('.main_menu').eq(index).insertBefore($('.main_menu').eq(index-1));
    });
    
    //主菜单排序下降
    $(document).on('click', '.main_menu_down_btn', function (e) {
      e.preventDefault();

      var index = $('.main_menu_down_btn').index($(this));
      var len = $('.main_menu_down_btn').length ;
      if( (index + 1) == len ) {
        tips( '已经排行最后了' );
        return ;
      }
      
      //交换item位置
      _this.swap_item( _this.config.wx_menu.button , index , index + 1 ) ;
      //交换页面位置
      $('.main_menu').eq(index).insertAfter($('.main_menu').eq(index+1));
    });
    
    //主菜单排序提升
    $(document).on('click', '.main_menu_up_btn', function (e) {
      e.preventDefault();

      var index = $('.main_menu_up_btn').index($(this));      
      if( index == 0 ) {
        tips( '已经排行第一了' );
        return ;
      }
      
      //交换item位置
      _this.swap_item( _this.config.wx_menu.button , index , index - 1 ) ;
      //交换页面位置
      $('.main_menu').eq(index).insertBefore($('.main_menu').eq(index-1));
    });
    
    //子菜单排序上升
    $(document).on('click', '.sub_menu_up_btn', function (e) {
      e.preventDefault();

      var this_main_menu_obj = $(this).parents('.main_menu') ;
      var main_menu_index =  $('.main_menu').index( this_main_menu_obj ) ;
      var index = $('.main_menu').eq(main_menu_index).find('.sub_menu_up_btn').index( $(this) );

      var len = $('.main_menu').eq(main_menu_index).find('.sub_menu_up_btn').length ;
      if( index == 0 ) {
        tips( '已经排行第一了' );
        return ;
      }
      
      //交换item位置
      _this.swap_item( _this.config.wx_menu.button[main_menu_index]['sub_button'] , index , index - 1 ) ;
      //交换页面位置
      var sub_menu_obj = $('.main_menu').eq(main_menu_index).find('.sub_menu');
      sub_menu_obj.eq(index).insertBefore( sub_menu_obj.eq(index-1) );
    });
    
    //子菜单排序下降
    $(document).on('click', '.sub_menu_down_btn', function (e) {
      e.preventDefault();

      var this_main_menu_obj = $(this).parents('.main_menu') ;
      var main_menu_index =  $('.main_menu').index( this_main_menu_obj ) ;
      var index = $('.main_menu').eq(main_menu_index).find('.sub_menu_down_btn').index( $(this) );

      if( ( index + 1 ) == 5 ) {
        tips( '已经排行最后了' );
        return ;
      }
      //交换item位置
      _this.swap_item( _this.config.wx_menu.button[main_menu_index]['sub_button'] , index , index + 1 ) ;
      //交换页面位置
      var sub_menu_obj = $('.main_menu').eq(main_menu_index).find('.sub_menu');
      sub_menu_obj.eq(index).insertAfter( sub_menu_obj.eq(index+1) );
    });
    
    //删除子菜单
    $(document).on('click', '.sub_menu_delete_btn', function (e) {
      e.preventDefault();
      
      var self_main_menu = $(this).parents('.main_menu');
      
      var main_menu_index = $('.main_menu').index( self_main_menu );
      var sub_menu_index = self_main_menu.find('.sub_menu_delete_btn').index($(this));
            
      $(this).parents('.sub_menu').remove();
      _this.config.wx_menu.button[main_menu_index].sub_button.remove( sub_menu_index );
    });
  },
  
  init_menu :function() {
    var _this = this ;
    var len = _this.config.wx_menu.button.length ;
    var data = _this.config.wx_menu.button ;
    $('#menu_html').empty();
    for( var i = 0 ; i < len ; i++ ) {
      $('#menu_html').append( _this.config.main_menu_tmp.replace(/{name}/g , data[i].name).replace(/{value}/g ,data[i].value) );
      if ( !empty( data[i].sub_button ) ) {
        var sub_button_len = data[i].sub_button.length ;
        for( var j = 0 ; j < sub_button_len ; j++ ) {
          $('.main_menu').eq(i).append( _this.config.sub_menu_tmp.replace(/{name}/g , data[i].sub_button[j].name).replace(/{value}/g ,data[i].sub_button[j].value) );
        }
      }
    }

  },
  
  swap_item : function( arr , index1 , index2 ) {
    arr[index1] = arr.splice( index2 , 1 , arr[index1] )[0];
    return arr;
  },
  
  update_wx_menu_data : function(){
    var _this = this ;
    //更新数组信息
    var main_menu_len = $('.main_menu').length ;
    for( var i = 0 ; i < main_menu_len ; i++ ) {
      _this.config.wx_menu.button[i].name = $('.main_menu_name').eq(i).val();
      _this.config.wx_menu.button[i].value = $('.main_menu_value').eq(i).val();

      var sub_menu_len = $('.main_menu').eq(i).find('.sub_menu').length ;

      for( var j = 0 ; j < sub_menu_len ; j++ ) {
        _this.config.wx_menu.button[i].sub_button[j].name = $('.main_menu').eq(i).find('.sub_menu_name').eq(j).val();
        _this.config.wx_menu.button[i].sub_button[j].value = $('.main_menu').eq(i).find('.sub_menu_value').eq(j).val();
      }
    }
  },

};







